home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / mxutil / dtcd101 / cdrom.lst next >
File List  |  1994-01-25  |  20KB  |  602 lines

  1. Extract from Ralf Brown's Interrupt List Version 38. All credits for this
  2. text go to him...
  3.  
  4. ==============================================================================
  5.  
  6. INT 21 - CD-ROM device driver - IOCTL INPUT
  7.     AX = 4402h
  8.     BX = file handle referencing character device for CD-ROM driver
  9.     CX = number of bytes to read
  10.     DS:DX -> control block (see below)
  11. Return: CF clear if successful
  12.         AX = number of bytes actually read
  13.     CF set on error
  14.         AX = error code (01h,05h,06h,0Dh) (see AH=59h)
  15. Note:    the data returned depends on the first byte of the control block; the
  16.       remainder of the control block is filled by the driver
  17. SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h
  18.  
  19. Values for data being requested:
  20.  00h    device driver header address
  21.  01h    drive head location
  22.  02h    reserved
  23.  03h    error statistics
  24.  04h    audio channel info
  25.  05h    raw drive bytes (uninterpreted and device-specific)
  26.  06h    device status
  27.  07h    sector size
  28.  08h    volume size
  29.  09h    media change status
  30.  0Ah    audio disk info
  31.  0Bh    audio track info
  32.  0Ch    audio Q-Channel info
  33.  0Dh    audio sub-channel info
  34.  0Eh    UPC code
  35.  
  36. Format of control block:
  37. Offset    Size    Description
  38.  00h    BYTE    data being requested (see above)
  39. ---function 00h---
  40.  01h    DWORD    device driver header address (see also AH=52h)
  41. ---function 01h---
  42.  01h    BYTE    addressing mode
  43.         00h HSG
  44.         01h Red Book
  45.  02h    DWORD    current location of drive's head
  46.         logical sector number in HSG mode
  47.         frame/second/minute/unused in Red Book mode
  48.         (HSG sector = minute * 4500 + second * 75 + frame - 150)
  49. ---function 03h---
  50.  01h  N BYTEs    undefined as of 5 Aug 88 specification
  51. ---function 04h---
  52.  01h    BYTE    input channel (0-3) for output channel 0
  53.  02h    BYTE    volume for output channel 0
  54.  03h    BYTE    input channel (0-3) for output channel 1
  55.  04h    BYTE    volume for output channel 1
  56.  05h    BYTE    input channel (0-3) for output channel 2
  57.  06h    BYTE    volume for output channel 2
  58.  07h    BYTE    input channel (0-3) for output channel 3
  59.  08h    BYTE    volume for output channel 3
  60. Notes:    output channels 0 and 1 are left and right, 2 and 3 are left prime and
  61.       right prime; a volume of 00h is off
  62.     the default setting is for each input channel to be assigned to the
  63.       same-numbered output channel at full (FFh) volume
  64. ---function 05h---
  65.  01h    BYTE    number of bytes read
  66.  02h 128 BYTEs    buffer for drive bytes
  67. ---function 06h---
  68.  01h    DWORD    device parameters (see below)
  69. ---function 07h---
  70.  01h    BYTE    read mode
  71.         00h cooked
  72.         01h raw
  73.  02h    WORD    sector size in bytes
  74. ---function 08h---
  75.  01h    DWORD    volume size in sectors
  76. ---function 09h---
  77.  01h    BYTE    media change status
  78.         00h don't know
  79.         01h media unchanged
  80.         FFh media has been changed
  81. ---function 0Ah---
  82.  01h    BYTE    lowest audio track number
  83.  02h    BYTE    highest audio track number
  84.  03h    DWORD    start address of lead-out track (Red Book format)
  85. --function 0Bh---
  86.  01h    BYTE    track number (set by caller)
  87.  02h    DWORD    starting point of track (Red Book format)
  88.  06h    BYTE    track control info
  89.         bits 15,14,12: track type (notice: bits not contiguous!)
  90.             000 two audio channels, no pre-emphasis
  91.             001 two audio channels with pre-emphasis
  92.             010 data track
  93.             100 four audio channels, no pre-emphasis
  94.             101 four audio channels with pre-emphasis
  95.             other reserved
  96.         bit 13: digital copy permitted
  97. ---function 0Ch---
  98.  01h    BYTE    CONTROL and ADR byte (as received from drive)
  99.  02h    BYTE    track number
  100.  03h    BYTE    point or index
  101.  04h    BYTE    minute    \
  102.  05h    BYTE    second     > running time within track
  103.  06h    BYTE    frame    /
  104.  07h    BYTE    zero
  105.  08h    BYTE    "AMIN" or "PMIN"     \
  106.  09h    BYTE    "ASEC" or "PSEC"      > running time on disk
  107.  0Ah    BYTE    "AFRAME" or "PFRAME" /
  108. ---function 0Dh---
  109.  01h    DWORD    starting frame address (Red Book format)
  110.  05h    DWORD    transfer address
  111.  09h    DWORD    number of sectors to read
  112. Note:    copies 96 bytes of sub-channel info per sector into buffer
  113. ---function 0Eh---
  114.  01h    BYTE    CONTROL and ADR byte
  115.  02h  7 BYTEs    UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
  116.  09h    BYTE    zero
  117.  0Ah    BYTE    "AFRAME"
  118.  
  119. Bitfields for device parameters:
  120.  bit 0    door open
  121.  bit 1    door unlocked
  122.  bit 2    supports raw reading in addition to cooked
  123.  bit 3    writable
  124.  bit 4    can play audio/video tracks
  125.  bit 5    supports interleaving
  126.  bit 6    reserved
  127.  bit 7    supports prefetch requests
  128.  bit 8    supports audio channel control
  129.  bit 9    supports Red Book addressing in addition to HSG
  130.  bit 10 audio is playing
  131.  
  132. ==============================================================================
  133.  
  134. INT 21 - CD-ROM device driver - IOCTL OUTPUT
  135.     AX = 4403h
  136.     BX = file handle referencing character device for CD-ROM driver
  137.     CX = number of bytes to write
  138.     DS:DX -> control block (see below)
  139. Return: CF clear if successful
  140.         AX = number of bytes actually written
  141.     CF set on error
  142.         AX = error code (01h,05h,06h,0Dh) (see AH=59h)
  143. SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h
  144.  
  145. Format of control block:
  146. Offset    Size    Description
  147.  00h    BYTE    function code
  148.         00h eject disk
  149.         01h lock/unlock door
  150.         02h reset drive
  151.         03h control audio channel
  152.         04h write device control string
  153.         05h close tray
  154. ---functions 00h,02h,05h---
  155.  no further fields
  156. ---function 01h---
  157.  01h    BYTE    lock function
  158.         00h unlock door
  159.         01h lock door
  160. ---function 03h---
  161.  01h    BYTE    input channel (0-3) for output channel 0
  162.  02h    BYTE    volume for output channel 0
  163.  03h    BYTE    input channel (0-3) for output channel 1
  164.  04h    BYTE    volume for output channel 1
  165.  05h    BYTE    input channel (0-3) for output channel 2
  166.  06h    BYTE    volume for output channel 2
  167.  07h    BYTE    input channel (0-3) for output channel 3
  168.  08h    BYTE    volume for output channel 3
  169. Note:    output channels 0 and 1 are left and right, 2 and 3 are left prime and
  170.       right prime; a volume of 00h is off
  171. ---function 04h---
  172.  01h  N BYTEs    bytes to send directly to the CD-ROM drive without
  173.         interpretation
  174.  
  175. ==============================================================================
  176.  
  177. IOCTL command codes
  178. ===================
  179.  
  180. Values for command code:
  181.  00h    INIT
  182.  01h    MEDIA CHECK (block devices)
  183.  02h    BUILD BPB (block devices)
  184.  03h    IOCTL INPUT
  185.  04h    INPUT
  186.  05h    NONDESTRUCTIVE INPUT, NO WAIT (character devices)
  187.  06h    INPUT STATUS (character devices)
  188.  07h    INPUT FLUSH (character devices)
  189.  08h    OUTPUT
  190.  09h    OUTPUT WITH VERIFY
  191.  0Ah    OUTPUT STATUS (character devices)
  192.  0Bh    OUTPUT FLUSH (character devices)
  193.  0Ch    IOCTL OUTPUT
  194.  0Dh    (DOS 3+) DEVICE OPEN
  195.  0Eh    (DOS 3+) DEVICE CLOSE
  196.  0Fh    (DOS 3+) REMOVABLE MEDIA (block devices)
  197.  10h    (DOS 3+) OUTPUT UNTIL BUSY (character devices)
  198.  11h    (European MS-DOS 4.0) STOP OUTPUT (console screen drivers only)
  199.  12h    (European MS-DOS 4.0) RESTART OUTPUT (console screen drivers only)
  200.  13h    (DOS 3.2+) GENERIC IOCTL
  201.  14h    unused
  202.  15h    (European MS-DOS 4.0) RESET UNCERTAIN MEDIA FLAG
  203.  16h    unused
  204.  17h    (DOS 3.2+) GET LOGICAL DEVICE
  205.  18h    (DOS 3.2+) SET LOGICAL DEVICE
  206.  19h    (DOS 5+) CHECK GENERIC IOCTL SUPPORT
  207.  80h    (CD-ROM) READ LONG
  208.  81h    (CD-ROM) reserved
  209.  82h    (CD-ROM) READ LONG PREFETCH
  210.  83h    (CD-ROM) SEEK
  211.  84h    (CD-ROM) PLAY AUDIO
  212.  85h    (CD-ROM) STOP AUDIO
  213.  86h    (CD-ROM) WRITE LONG
  214.  87h    (CD-ROM) WRITE LONG VERIFY
  215.  88h    (CD-ROM) RESUME AUDIO
  216.  
  217. Format of device driver request header:
  218. Offset    Size    Description
  219.  00h    BYTE    length of request header
  220.  01h    BYTE    subunit within device driver
  221.  02h    BYTE    command code (see above)
  222.  03h    WORD    status (filled in by device driver)
  223.         bit 15: error
  224.         bits 14-11: reserved
  225.         bit 10: ??? set by DOS kernel on entry to some driver calls
  226.         bit 9: busy
  227.         bit 8: done (may be clear on return under European MS-DOS 4.0)
  228.         bits 7-0: error code if bit 15 set (see below)
  229. ---DOS---
  230.  05h  4 BYTEs    reserved (unused in DOS 2.x and 3.x)
  231.  09h    DWORD    (European MS-DOS 4.0 only) pointer to next request header in
  232.             device's request queue
  233.         (other versions) reserved (unused in DOS 2.x and 3.x)
  234. ---STARLITE architecture---
  235.  05h    DWORD    pointer to next request header
  236.  09h  4 BYTEs    reserved
  237. ---command code 00h---
  238.  0Dh    BYTE    (return) number of units
  239.  0Eh    DWORD    (call) pointer to DOS device helper function (see below)
  240.             (European MS-DOS 4.0 only)
  241.         (call) pointer past end of memory available to driver (DOS 5+)
  242.         (return) address of first free byte following driver
  243.  12h    DWORD    (call) pointer to commandline arguments
  244.         (return) pointer to BPB array (block drivers) or
  245.                 0000h:0000h (character drivers)
  246.  16h    BYTE    (DOS 3+) drive number for first unit of block driver (0=A)
  247.    ---European MS-DOS 4.0---
  248.  17h    DWORD    pointer to function to save registers on stack
  249.    ---DOS 5+ ---
  250.  17h    WORD    (return) error-message flag
  251.             0001h MS-DOS should display error msg on init failure
  252. ---command code 01h---
  253.  0Dh    BYTE    media descriptor
  254.  0Eh    BYTE    returned status
  255.         00h don't know
  256.         01h media has not changed
  257.         FFh media has been changed
  258.  0Fh    DWORD    (return, DOS 3+) pointer to previous volume ID if OPEN/CLOSE/RM
  259.           bit in device header is set and disk changed
  260. ---command code 02h---
  261.  0Dh    BYTE    media descriptor
  262.  0Eh    DWORD    transfer address
  263.         -> scratch sector if NON-IBM FORMAT bit in device header set
  264.         -> first FAT sector otherwise
  265.  12h    DWORD    pointer to BPB (set by driver) (see INT 21/AH=53h)
  266. ---command codes 03h,0Ch--- (see also INT 21/AX=4402h,INT 21/AX=4403h)
  267.  0Dh    BYTE    media descriptor (block devices only)
  268.  0Eh    DWORD    transfer address
  269.  12h    WORD    (call) number of bytes to read/write
  270.         (return) actual number of bytes read or written
  271. ---command codes 04h,08h,09h---
  272.  0Dh    BYTE    media descriptor (block devices only)
  273.  0Eh    DWORD    transfer address
  274.  12h    WORD    byte count (character devices) or sector count (block devices)
  275.  14h    WORD    starting sector number (block devices only)
  276.  16h    DWORD    (DOS 3+) pointer to volume ID if error 0Fh returned
  277.  1Ah    DWORD    (DOS 4+) 32-bit starting sector number (block devices with
  278.         device attribute word bit 1 set only) if starting sector number
  279.         above is FFFFh (see INT 21/AH=52h)
  280. ---command code 05h---
  281.  0Dh    BYTE    byte read from device if BUSY bit clear on return
  282. ---command codes 06h,07h,0Ah,0Bh,0Dh,0Eh,0Fh---
  283.  no further fields
  284. ---command code 10h---
  285.  0Dh    BYTE    unused
  286.  0Eh    DWORD    transfer address
  287.  12h    WORD    (call) number of bytes to write
  288.         (return) actual number of bytes written
  289. ---command codes 11h,12h---
  290.  0Dh    BYTE    reserved
  291. ---command code 15h---
  292.  no further fields
  293. ---command codes 13h,19h---
  294.  0Dh    BYTE    category code
  295.         00h unknown
  296.         01h COMn:
  297.         03h CON
  298.         05h LPTn:
  299.         07h mouse (European MS-DOS 4.0)
  300.         08h disk
  301.         9Eh (STARLITE) Media Access Control driver
  302.  0Eh    BYTE    function code
  303.         00h (STARLITE) MAC Bind request
  304.  0Fh    WORD    copy of DS at time of IOCTL call (apparently unused in DOS 3.3)
  305.         SI contents (European MS-DOS 4.0)
  306.  11h    WORD    offset of device driver header
  307.         DI contents (European MS-DOS 4.0)
  308.  13h    DWORD    pointer to parameter block from INT 21/AX=440Ch or AX=440Dh
  309. ---command codes 80h,82h---
  310.  0Dh    BYTE    addressing mode
  311.         00h HSG (default)
  312.         01h Phillips/Sony Red Book
  313.  0Eh    DWORD    transfer address (ignored for command 82h)
  314.  12h    WORD    number of sectors to read
  315.         (if 0 for command 82h, request is an advisory seek)
  316.  14h    DWORD    starting sector number
  317.         logical sector number in HSG mode
  318.         frame/second/minute/unused in Red Book mode
  319.         (HSG sector = minute * 4500 + second * 75 + frame - 150)
  320.  18h    BYTE    data read mode
  321.         00h cooked (2048 bytes per frame)
  322.         01h raw (2352 bytes per frame, including EDC/ECC)
  323.  19h    BYTE    interleave size (number of sectors stored consecutively)
  324.  1Ah    BYTE    interleave skip factor (# sectors between consec portions)
  325. ---command code 83h---
  326.  0Dh    BYTE    addressing mode (see above)
  327.  0Eh    DWORD    transfer address (ignored)
  328.  12h    WORD    number of sectors to read (ignored)
  329.  14h    DWORD    starting sector number (see also above)
  330. ---command code 84h---
  331.  0Dh    BYTE    addressing mode (see above)
  332.  0Eh    DWORD    starting sector number (see also above)
  333.  12h    DWORD    number of sectors to play
  334. ---command codes 85h,88h---
  335.  no further fields
  336. ---command codes 86h,87h---
  337.  0Dh    BYTE    addressing mode (see above)
  338.  0Eh    DWORD    transfer address (ignored in write mode 0)
  339.  12h    WORD    number of sectors to write
  340.  14h    DWORD    starting sector number (see also above)
  341.  18h    BYTE    write mode
  342.         00h mode 0 (write all zeros)
  343.         01h mode 1 (default) (2048 bytes per sector)
  344.         02h mode 2 form 1 (2048 bytes per sector)
  345.         03h mode 2 form 2 (2336 bytes per sector)
  346.  19h    BYTE    interleave size (number of sectors stored consecutively)
  347.  1Ah    BYTE    interleave skip factor (# sectors between consec portions)
  348.  
  349. Values for error code:
  350.  00h    write-protect violation
  351.  01h    unknown unit
  352.  02h    drive not ready
  353.  03h    unknown command
  354.  04h    CRC error
  355.  05h    bad drive request structure length
  356.  06h    seek error
  357.  07h    unknown media
  358.  08h    sector not found
  359.  09h    printer out of paper
  360.  0Ah    write fault
  361.  0Bh    read fault
  362.  0Ch    general failure
  363.  0Dh    reserved
  364.  0Eh    (CD-ROM) media unavailable
  365.  0Fh    invalid disk change
  366.  
  367. ==============================================================================
  368.  
  369. INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
  370.     AX = 1100h
  371.     STACK: WORD DADAh
  372. Return: AL = status
  373.         00h not installed, OK to install
  374.         STACK unchanged
  375.         01h not installed, not OK to install
  376.         STACK unchanged
  377.         FFh installed
  378.         STACK: WORD ADADh
  379.  
  380. ==============================================================================
  381.  
  382. INT 2F - CD-ROM - INSTALLATION CHECK
  383.     AX = 1500h
  384.     BX = 0000h
  385. Return: BX = number of CD-ROM drive letters used
  386.     CX = starting drive letter (0=A:)
  387. Notes:    this installation check DOES NOT follow the format used by other
  388.       software
  389.     this installation check conflicts with the DOS 4.00 GRAPHICS.COM
  390.       installation check
  391. SeeAlso: INT 2F/AX=D000h"Lotus"
  392.  
  393. ==============================================================================
  394.  
  395. INT 2F - CD-ROM - GET DRIVE DEVICE LIST
  396.     AX = 1501h
  397.     ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
  398. Return: buffer filled, for each drive letter
  399.       BYTE    subunit number in driver
  400.       DWORD address of device driver header
  401.  
  402. ==============================================================================
  403.  
  404. INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
  405.     AX = 1502h
  406.     ES:BX -> 38-byte buffer for name of copyright file
  407.     CX = drive number (0=A:)
  408. Return: CF set if drive is not a CD-ROM drive
  409.         AX = 000Fh (invalid drive)
  410.     CF clear if successful
  411. SeeAlso: AX=1503h
  412.  
  413. ==============================================================================
  414.  
  415. INT 2F - CD-ROM - GET ABSTRACT FILE NAME
  416.     AX = 1503h
  417.     ES:BX -> 38-byte buffer for name of abstract file
  418.     CX = drive number (0=A:)
  419. Return: CF set if drive is not a CD-ROM drive
  420.         AX = 000Fh (invalid drive)
  421.     CF clear if successful
  422. SeeAlso: AX=1502h,AX=1504h
  423.  
  424. ==============================================================================
  425.  
  426. INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
  427.     AX = 1504h
  428.     ES:BX -> 38-byte buffer for name of bibliographic documentation file
  429.     CX = drive number (0=A:)
  430. Return: CF set if drive is not a CD-ROM drive
  431.         AX = 000Fh (invalid drive)
  432.     CF clear if successful
  433. SeeAlso: AX=1502h,AX=1503h
  434.  
  435. ==============================================================================
  436.  
  437. INT 2F - CD-ROM - READ VTOC
  438.     AX = 1505h
  439.     ES:BX -> 2048-byte buffer
  440.     CX = drive number (0=A:)
  441.     DX = sector index (0=first volume descriptor,1=second,...)
  442. Return: CF set on error
  443.         AX = error code (15=invalid drive,21=not ready)
  444.     CF clear if successful
  445.         AX = volume descriptor type (1=standard,FFh=terminator,0=other)
  446.  
  447. ==============================================================================
  448.  
  449. INT 2F - CD-ROM - TURN DEBUGGING ON
  450.     AX = 1506h
  451.     BX = debugging function to enable
  452. Note:    reserved for development
  453. SeeAlso: AX=1507h
  454.  
  455. ==============================================================================
  456.  
  457. INT 2F - CD-ROM - TURN DEBUGGING OFF
  458.     AX = 1507h
  459.     BX = debugging function to disable
  460. Note:    reserved for development
  461. SeeAlso: AX=1506h
  462.  
  463. ==============================================================================
  464.  
  465. INT 2F - CD-ROM - ABSOLUTE DISK READ
  466.     AX = 1508h
  467.     ES:BX -> buffer
  468.     CX = drive number (0=A:)
  469.     SI:DI = starting sector number
  470.     DX = number of sectors to read
  471. Return: CF set on error
  472.         AL = error code (15=invalid drive,21=not ready)
  473.     CF clear if successful
  474. SeeAlso: AX=1509h
  475.  
  476. ==============================================================================
  477.  
  478. INT 2F - CD-ROM - ABSOLUTE DISK WRITE
  479.     AX = 1509h
  480.     ES:BX -> buffer
  481.     CX = drive number (0=A:)
  482.     SI:DI = starting sector number
  483.     DX = number of sectors to write
  484. Note:    corresponds to INT 26h and is currently reserved and nonfunctional
  485. SeeAlso: AX=1508h
  486.  
  487. ==============================================================================
  488.  
  489. INT 2F - CD-ROM - RESERVED
  490.     AX = 150Ah
  491.  
  492. ==============================================================================
  493.  
  494. INT 2F - CD-ROM v2.00+ - DRIVE CHECK
  495.     AX = 150Bh
  496.     CX = drive number (0=A:)
  497. Return: BX = ADADh if MSCDEX.EXE installed
  498.         AX = 0000h if drive not supported
  499.         nonzero if supported
  500. SeeAlso: AX=150Dh
  501.  
  502. ==============================================================================
  503.  
  504. INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION
  505.     AX = 150Ch
  506. Return: BH = major version
  507.     BL = minor version
  508. Note:    MSCDEX.EXE versions prior to 2.00 return BX=0
  509.  
  510. ==============================================================================
  511.  
  512. INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
  513.     AX = 150Dh
  514.     ES:BX -> buffer for drive letter list (1 byte per drive)
  515. Return: buffer filled with drive numbers (0=A:).  Each byte corresponds
  516.     to the drive in the same position for function 1501h
  517. SeeAlso: AX=150Bh
  518.  
  519. ==============================================================================
  520.  
  521. INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
  522.     AX = 150Eh
  523.     BX = subfunction
  524.         00h get preference
  525.         DX = 0000h
  526.         Return: DX = preference settings
  527.         01h set preference
  528.         DH = volume descriptor preference
  529.             01h = primary volume descriptor
  530.             02h = supplementary volume descriptor
  531.         DL = supplementary volume descriptor preference
  532.             01h = shift-Kanji
  533.     CX = drive number (0=A:)
  534. Return: CF set on error
  535.         AX = error code (15=invalid drive,1=invalid function)
  536.     CF clear if successful
  537.  
  538. INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
  539.     AX = 150Fh
  540.     CL = drive number (0=A:)
  541.     CH bit 0 = copy flag
  542.         clear if direct copy
  543.         set if copy to structure which removes ISO/High Sierra diffs
  544.     ES:BX -> ASCIZ path name
  545.     SI:DI -> buffer for directory entry (see below)
  546.          minimum 255 bytes for direct copy
  547. Return: CF set on error
  548.         AX = error code
  549.     CF clear if successful
  550.         AX = disk format (0=High Sierra,1=ISO 9660)
  551.  
  552. Format of directory entry (direct copy):
  553. Offset    Size    Description
  554.  00h    BYTE  length of directory entry
  555.  01h    BYTE  length of XAR in Logical Block Numbers
  556.  02h    DWORD LBN of data, Intel (little-endian) format
  557.  06h    DWORD LBN of data, Motorola (big-endian) format
  558.  0Ah    DWORD length of file, Intel format
  559.  0Eh    DWORD length of file, Motorola format
  560. ---High Sierra---
  561.  12h  6 BYTEs date and time
  562.  18h    BYTE  bit flags
  563.  19h    BYTE  reserved
  564. ---ISO 9660---
  565.  12h  7 BYTEs date and time
  566.  19h    BYTE  bit flags
  567. ---both formats---
  568.  1Ah    BYTE  interleave size
  569.  1Bh    BYTE  interleave skip factor
  570.  1Ch    WORD  volume set sequence number, Intel format
  571.  1Eh    WORD  volume set sequence number, Motorola format
  572.  20h    BYTE  length of file name
  573.  21h  N BYTEs file name
  574.     BYTE (optional) padding if filename is odd length
  575.       N BYTEs system data
  576.  
  577. Format of directory entry (canonicalized):
  578. Offset    Size    Description
  579.  00h    BYTE    length of XAR in Logical Block Numbers
  580.  01h    DWORD    Logical Block Number of file start
  581.  05h    WORD    size of disk in logical blocks
  582.  07h    DWORD    file length in bytes
  583.  0Bh  7 BYTEs    date and time
  584.  12h    BYTE    bit flags
  585.  13h    BYTE    interleave size
  586.  14h    BYTE    interleave skip factor
  587.  15h    WORD    volume set sequence number
  588.  17h    BYTE    length of file name
  589.  18h 38 BYTEs    ASCIZ filename
  590.  3Eh    WORD    file version number
  591.  40h    BYTE    number of bytes of system use data
  592.  41h 220 BYTEs    system use data
  593.  
  594. ==============================================================================
  595.  
  596. INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
  597.     AX = 1510h
  598.     CX = CD-ROM drive letter (0 = A, 1 = B, etc)
  599.     ES:BX -> CD-ROM device driver request header (see AX=0802h)
  600.  
  601. ==============================================================================
  602.